//package com.system.design.seckill.common.utils;
//
//import java.text.SimpleDateFormat;
//import java.util.List;
//import java.util.Map;
//
//import com.fasterxml.jackson.annotation.JsonInclude;
//import com.fasterxml.jackson.core.JsonProcessingException;
//import com.fasterxml.jackson.databind.module.SimpleModule;
//import com.fasterxml.jackson.databind.DeserializationFeature;
//import com.fasterxml.jackson.databind.JavaType;
//import com.fasterxml.jackson.databind.ObjectMapper;
//import com.fasterxml.jackson.databind.SerializationFeature;
//
//public class JsonUtils {
//
//    // 定义jackson对象
//    private static final ObjectMapper MAPPER = new ObjectMapper();
//    static {
//        MAPPER.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
//        MAPPER.configure(DeserializationFeature.FAIL_ON_IGNORED_PROPERTIES, false);
//        MAPPER.configure(DeserializationFeature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT, true);
//        // 按时间戳格式读取日期
//        // MAPPER.configure(DeserializationFeature.READ_DATE_TIMESTAMPS_AS_NANOSECONDS, true);
//        MAPPER.configure(DeserializationFeature.READ_UNKNOWN_ENUM_VALUES_AS_NULL, true);
//        MAPPER.configure(DeserializationFeature.READ_ENUMS_USING_TO_STRING, true);
//        MAPPER.configure(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY, true);
//        // 序列化
//        // 禁止序列化空值
//        MAPPER.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false);
//        MAPPER.configure(SerializationFeature.WRITE_ENUMS_USING_TO_STRING, true);
//        // 按时间戳格式生成日期
//        MAPPER.configure(SerializationFeature.FLUSH_AFTER_WRITE_VALUE, true);
//        // 不包含空值属性
//        MAPPER.setSerializationInclusion(JsonInclude.Include.NON_EMPTY);
//        MAPPER.setSerializationInclusion(JsonInclude.Include.NON_NULL);
//        // 是否缩放排列输出，默认false，有些场合为了便于排版阅读则需要对输出做缩放排列
//        MAPPER.configure(SerializationFeature.INDENT_OUTPUT, false);
//        // 设置全局的时间转化
//        SimpleDateFormat smt = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//        MAPPER.setDateFormat(smt);
//        // 设置日期反序列化组件
//        SimpleModule dateDeserializerModule = new SimpleModule();
//        MAPPER.registerModule(dateDeserializerModule);
//    }
//
//    /**
//     * 将对象转换成json字符串。
//     * <p>Title: pojoToJson</p>
//     * <p>Description: </p>
//     * @param data
//     * @return
//     */
//    public static String objectToJson(Object data) {
//        try {
//            return MAPPER.writeValueAsString(data);
//        } catch (JsonProcessingException e) {
//            e.printStackTrace();
//        }
//        return null;
//    }
//
//    /**
//     * 将json结果集转化为对象
//     *
//     * @param jsonData json数据
//     * @param beanType 对象中的object类型
//     * @return
//     */
//    public static <T> T jsonToPojo(String jsonData, Class<T> beanType) {
//        try {
//            return MAPPER.readValue(jsonData, beanType);
//        } catch (Exception e) {
//            e.printStackTrace();
//        }
//        return null;
//    }
//
//    /**
//     * 将json数据转换成pojo对象list
//     * <p>Title: jsonToList</p>
//     * <p>Description: </p>
//     * @param jsonData
//     * @param beanType
//     * @return
//     */
//    public static <T>List<T> jsonToList(String jsonData, Class<T> beanType) {
//        JavaType javaType = MAPPER.getTypeFactory().constructParametricType(List.class, beanType);
//        try {
//            return MAPPER.readValue(jsonData, javaType);
//        } catch (Exception e) {
//            e.printStackTrace();
//        }
//        return null;
//    }
//
//
//    public static Map<String,Object> objectToMap(Object data){
//        String s = null;
//        try {
//            s = MAPPER.writeValueAsString(data);
//            Map<String,Object> map = MAPPER.readValue(s, Map.class);
//            return map;
//        } catch (JsonProcessingException e) {
//            e.printStackTrace();
//        }
//        return null;
//    }
//
//}
//
